/**
 * @param {string} path
 * @returns {Boolean}
 */


const validate = {
    //必须要大于8位数和数字字母的结合
    checkPassword(password) {
        const reg = /^(?=.*[A-Za-z])(?=.*\d).{9,}$/;
        return reg.test(password);
    },


    isExternal(path) {
        return /^(https?:|mailto:|tel:)/.test(path);
    },


    //去重
    depSet(array) {
        return Array.from(new Set(array));
    },

    //身份证校验
    validIdCard(idCard) {
        const regex =
            /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/
        return regex.test(idCard)
    },

    //处理时间
    formatDate(isoString) {
        const date = new Date(isoString);
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始，需要加1，并且保证两位数字  
        const day = String(date.getDate()).padStart(2, '0'); // 保证两位数字  
        const hours = String(date.getHours()).padStart(2, '0'); // 保证两位数字  
        const minutes = String(date.getMinutes()).padStart(2, '0'); // 保证两位数字  
        const seconds = String(date.getSeconds()).padStart(2, '0'); // 保证两位数字  
        return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
    },


    /**
     * @param {string} str
     * @returns {Boolean}
     * 空格校验
     */
    validUsername(str) {
        const valid_map = ["admin", "editor"];
        return valid_map.indexOf(str.trim()) >= 0;
    },

    /**
     * @param {string} url
     * @returns {Boolean}
     * url链接校验
     */
    validURL(url) {
        const reg =
            /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
        return reg.test(url);
    },

    /**
     * @param {string} str
     * @returns {Boolean}
     * 小写转换
     */
    validLowerCase(str) {
        const reg = /^[a-z]+$/;
        return reg.test(str);
    },

    /**
     * @param {string} str
     * @returns {Boolean}
     * 大写转换
     */
    validUpperCase(str) {
        const reg = /^[A-Z]+$/;
        return reg.test(str);
    },

    /**
     * @param {string} str
     * @returns {Boolean}
     * 24位大小写字母
     */
    validAlphabets(str) {
        const reg = /^[A-Za-z]+$/;
        return reg.test(str);
    },

    /**
     * @param {string} email
     * @returns {Boolean}
     * 邮箱
     */
    validEmail(email) {
        const reg =
            /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return reg.test(email);
    },

    /**
     * @param {string} str
     * @returns {Boolean}
     * String类型
     */
    isString(str) {
        if (typeof str === "string" || str instanceof String) {
            return true;
        }
        return false;
    },

    /**
     * @param {Array} arg
     * @returns {Boolean}
     * 数组判断
     */
    isArray(arg) {
        if (typeof Array.isArray === "undefined") {
            return Object.prototype.toString.call(arg) === "[object Array]";
        }
        return Array.isArray(arg);
    },

}
export default validate